对于产品研发团队来说,每次软件新版本发布的时候都会面临很大的压力,研发人员、产品经理、测试人员甚至市场运营人员都要在新版本上线的时刻随时待命应对随时可能出现的意外情况,新版发布当天加班熬夜也已经成了常态。一批功能历经一个迭代周期的开发,再从测试环境发布到生产环境上,总会存在较大的风险。如何改善当前软件交付的状况?能否让软件发布简单、快速、安全低风险呢?要实现这一个目标,就要从功能管理说起。
什么是“功能管理”?
"功能管理"是一种软件开发中的理念与实践。将新功能通过带有开关控制的代码部署到生产环境中,并将功能有选择性地释放给终端用户。与以往的版本发布方式不同,按版本为粒度的发布通常揉合了一批新的功能,所有功能只能在这一个批次中全部提供给用户,遇到发布问题只能全部进行回滚。而功能管理可以做到按功能粒度灵活地、有效地、安全地、快速地选择发布规则,并且可以单独验证每个功能的效果。
功能管理与渐进式交付
渐进式交付是将复杂的工程项目进行分阶段拆解,通过持续进行小型迭代闭环,降低交付成本并节省交付时间。功能管理和渐进式交付的目标是一致的,都是降低软件产品风险,快速验证商业目标。功能管理在『功能』粒度为渐进式交付铺平道路,使单个功能的渐进式交付成为了可能。在当前千变万化的商业环境中,通过渐进式功能交付,让产品在软件开发过程中赢在起跑线上。
功能管理与DevOps
功能管理也是 DevOps 中的重要一环,通过功能管理,可以更好的达成 DevOps 中的以下目标:
- 提高部署和发布效率
- 减少变更准备时间
- 降低 MTTR(平均修复时间)
- 降低变更失败率
功能管理的四大支柱
功能管理由构建、运维、复盘、赋能,四大支柱支撑。通过这四大支柱的实践,才能发挥功能管理最大的功效。
- 构建
构建包含了功能开关的创建、新功能的交付、问题修复和代码变更等。规划和构建功能开关是产品功能发布前,甚至是研发开始前的重要活动。它会影响到软件的产品功能以及研发计划,比如说开发团队采用哪种分支管理模式、测试过程如何安排独立功能与功能组合测试、产品功能维度的推广发布计划等。构建的目标是更快的开发部署,降低产品试错成本,并且可以快速的验证代码变更带来的效果。
- 运维
在产品运维过程中,可以利用功能开关监控去查看功能的线上运行情况与用户反馈,一旦功能有故障或者用户反馈异常,能随时关闭功能,可以在几秒内快速消除影响,保障应用程序其他功能的正常使用。
- 复盘
复盘可以让产品团队更好地了解到产品更新是如何影响到系统和用户,整个团队包括设计、产品、研发、管理者都可以通过功能管理平台复盘学习,更全面地了解产品对用户行为的最终影响,最后由数据驱动产品。
- 赋能
传统的软件交付方式依赖于研发人员,只能由研发人员来操作设置发布。功能管理可以将产品发布授权给运营、产品、销售等非研发技术人员。相比较研发人员来说,产品、销售、运营等工作人员接触到前端的真实用户,可以更了解用户的真实需求,但由于缺乏技术能力,导致他们无法控制发布,也缺乏验证需求以及商业可行性的手段与工具。功能管理可以赋予他们这些应有的能力。他们不需要掌握研发技术,只需要极少的学习成本即可快速上手将产品功能发布给特定条件下的用户,并获取到用户反馈。
FeatureProbe 是为功能管理量身打造的产品,我们的使命是让产品功能发布更有价值,推动行业软件工程能力的提升,由被动的软件交付方式转为主动规划、功能粒度控制的发布模式。
目前 FeatureProbe 使用 Apache 2.0 License 协议已经完全开源。你可以在 GitHub 或 Gitee 获取所有 代码。与此同时,我们提供了无需部署的在线试用环境 和一个仅需5分钟即可体验的示例项目.
如果你对功能(特性)管理感兴趣,欢迎加入到我们的开源项目中来,共同推动软件开发行业的效能。同时也可以扫描以下二维码加入我们的开源沟通群和大家一起沟通探讨软件开发效能。
如以上二维码失效,可扫描以下二维码,添加我们的工作人员。